package org.rm.beans;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.rm.beans.util.FacesUtil;
import org.rm.controladores.ControladorPartida;
import org.rm.entidades.Partida;

public class GestorPartidas {
	
	private DatosModelo modelo;
	private ControladorPartida partida;
    private String nombrePartida;
	
	public GestorPartidas() {
		partida = new ControladorPartida();
	}
	
	public void setModelo(DatosModelo modelo) {
		this.modelo = modelo;
	}
	
	/**
     * Método getter del atributo {@code nombrePartida} utilizado para que el
     * usuario pueda especificar un nombre para una partida nueva
     * @return el valor del atributo
     */
    public String getNombrePartida() {
        return nombrePartida;
    }

    /**
     * Método setter del atributo {@code nombrePartida} utilizado para que el
     * usuario pueda especificar un nombre para una partida nueva
     * @param nombrePartida
     */
    public void setNombrePartida(String nombrePartida) {
        this.nombrePartida = nombrePartida;
    }    

    /**
     * Devuelve la lista de partidas disponible a través del mapa de partidas
     * de {@code form}
     * @return lista de partidas en la sesión
     * @see FormularioBean#getMapaPartidas() 
     */
    public List<Partida> getPartidas() {
        List<Partida> listaPartidas = new ArrayList<Partida>();
        Map<Integer, Partida> partidas = modelo.getMapaPartidas();
        for (Integer idPartida : partidas.keySet()) {
            listaPartidas.add(partidas.get(idPartida));
        }
        return listaPartidas;
    }
    
    public String nuevaPartida() {
		Partida p = partida.nuevaPartida(nombrePartida);
        modelo.getMapaPartidas().put(p.getId(), p);
		return "partidas";
	}
	
	public String modificaPartida() {
		Integer id = Integer.valueOf(FacesUtil.getParam("id"));
		Partida p = modelo.getPartida(id);
		partida.modificaPartida(p);
        return "partidas";
	}

}
